// 加载模块
const express = require('express')
// 加载密码加密的模块
const utility = require('utility')
// 加载自定义模块
const bd = require('./连接服务器')
// 加载token模块
const jwt = require('jsonwebtoken')
// 创建 router 实例
const router = express.Router()
// 创建验证中间体
router.use((req, res, next) => {
    let { username, password } = req.body
    // 正则用户名验证 英文开头 6-12位
    let user = /^[a-zA-Z][0-9a-zA-Z_]{5,11}$/
    // 正则密码验证 6-12位 不能有空字符
    let validation = /^[a-zA-Z0-9]{6,12}$/
    // 判断
    if (!user.test(username)) {
        next('用户名英文开头 6-12位')
    } else if (!validation.test(password)) {
        // 验证通过
        next('密码必须6-12位 不能有空字符')
    } else {
        next()
    }
})
// 牵引接口
// 处理注册请求
router.post('/reguser', (req, res) => {
    let { username, password } = req.body
    // 加密密码
    password = utility.md5(password)
    // 验证用户名
    bd(`select * from user where username='${username}'`, (err, result) => {
        if (err) throw err
        if (result.length > 0) {
            // 代表有用户名
            res.send({ status: 1, message: '用户名已存在' })
        } else {
            // 代表没有该用户
            bd(`insert into user set username='${username}',password='${password}'`, (err, result) => {
                if (err) throw err
                res.send({ status: 0, message: '注册成功' })
            })
        }
    })
})
// 处理登录请求
router.post('/login', (req, res) => {
    // 获取相应的数据
    let { username, password } = req.body
    // 转换数据
    password = utility.md5(password)
    // 验证
    bd(`select * from user where username='${username}' and password='${password}'`, (err, result) => {
        if (err) throw err
        if (result.length > 0) {
            // 带表验证通过
            // 创建token
            let token = jwt.sign({ id: result[0].id }, 'asdfghjkl123', { expiresIn: '2h' })
            res.send({ status: 0, message: '登录成功', token: 'Bearer ' + token })
        } else {
            res.send({ status: 1, message: '用户名或者密码错误' })
        }
    })
})
router.use((err, req, res, next) => {
    res.send({ status: 2, message: err })
})
// 输出 router
module.exports = router